介绍
本章主要介绍了JavaScript语言,准确来说是ECMAScript定义的一些语法基础。包括语法,关键字&保留字,数据类型,操作符,语句和函数。
由于ECMAScript的语法和C以及其他类似C的语言的语法相似,这里在一些已经熟练掌握的知识点不会展开讨论和举例。
语法
- 区分大小写。
- 标识符命名规则:
- 以字母,_或$开头
- 只包含字母,_,$,或者数字
- 字母包括ASCII码和Unicode字符,但不推荐使用。
- 关键字:
|break |do |instanceof|typeof |
|case |else |new |var |
|catch |finally |return |void |
|continue|for |switch |while |
|debugger|function|this |with |
|default |if |throw |
|delete |in |try | - 保留字:
|abstract |enum |int |short |
|boolean |export |interface |static |
|byte |extends |long |super |
|char |final |native |synchronized |
|class |float |package |throws |
|debugger |implements|protected |valotile |
|double |import |public | - 变量
- ECMAScript是松散类型,变量可以保存任何类型的数据。
- 已经被赋值的变量可以被重新赋予别的数据类型的值。
- 用
var
声明的变量是局部变量。
数据类型
- 基本数据类型(simple data type / primitive types):Undefined, Null, Boolean, Number and String.
- 复杂数据类型(complex data type):Object
- typeof操作符:返回值有“undefined”,“string”,“boolean”,“number”,“object”,“function”。但
typeof Null
的返回值是”object”。
Undefined
- 只有一种值,即undefined。如果一个变量用
var
声明了且没有被赋值,将会得到值undefined。 - 使用typeof判断没有赋值的变量和没有声明的变量时,都会返回“undefined”。所以建议每次声明变量时都赋值,就可以用typeof检测变量是否被声明。
- 一般来说不推荐直接用
Null
- 只有一种值,即null。
Null和Undefined存在值相等的关系。
1
alert(null == undefined); //return true
不同于Undefined,如果一个对象object需要被赋值为null方便日后进行进一步操作,null用于赋值是合理的。
Boolean
- true不等于1,false不等于0。
- 类型转换
| Data Type | true | false |
| ————- |:————-: | —–: |
|String | non-empty string | “” |
|Number | non-zero number | 0 |
|Object | any object | null |
|Undefined | n/a | undefined|
Number
- 基于IEEE-754标准
- 一般为十进制,八进制以(0)开头,十六进制以(0x)开头。
- 小数的存储空间为整数的两倍。故而如果小数的值是整数(如1.0),或者小数点后面没有值(如1.),都会以整数的方式存储。
- 小数的运算不应该用来做判断条件,因为比如(0.1 + 0.2)的计算结果是0.30000000000004,是IEEE-754标准的通病。因此:
1
if (0.1+0.2 == 0.3) {}
这样的代码就并不好。
- 最小值(Number.MIN_VALUE)是5e-324,最大值(Number.MAX_VALUE)是1.7976931348623157e308。
- NaN表示Not a Number。比如 x / 0的运算会返回NaN。但是不会报错阻止后续程序的运行。NaN不等于任何值,包括自身。
- isNaN()方法被调用时,会尝试将参数转化为数字,成功则返回false,否则返回true。
- 类型转换
- Number()可以使用在任何数据类型上。
1 | var num1 = Number(null); // return 0 |
- parseInt()用来判断String可否被转化为整数。
1 | var num1 = parseInt("12.3"); // return 12 |
- parseFloat()方法用来判断String可否被转化为小数。
1 | var num1 = parseFloat("12.3.3"); // return 12.3 |
String
- String是不可改变的,字符串生成后即在内存中存储,如果字符串变量被重新复制,将会为新字符串开辟存储空间,然后销毁旧字符串。
- toString()方法适用于numbers, Boolean, objects和strings。
Object
对象主要有以下几个属性和方法:
- constructor:构造器,用来生成对象实例。
- hasOwnProperty(propertyName):判断对象是否有特定属性,参数需是string。
- isPrototypeOf(object):判断对象的原型是否是另一个对象。
- propertyIsEnumerable(propertyName):判断一个属性是否能够有for-in语句。
- toLocaleString():返回一个字符串代表对象在执行环境中的表示。
- toString():返回一个字符串代表对象。
- valueOf():返回一个代表对象值得string,number或者Boolean。